package algoGenetic;

/**
 * Cette interface décrit des objets, solutions potentielles d'un problème.
 * Chaque instance peut être croisée avec une autre ou mutée, dans le but
 * d'obtenir une solution plus adaptée. L'adaptation d'une solution se mesure
 * grâce à la méthode compareTo. Il est possible que le problème ne dispose
 * pas d'une unique solution, ou qu'il soit impossible de vérifier que la
 * solution obtenue est bien la meilleure.
 * @author simon
 * @version 1.0
 */
public interface Genome extends Comparable<Genome> {
	
	/**
	 * Mute chaque element du Genome
	 */
	void mutation();
	
	/**
	 * Retourne un Genome issu du croisement de l'objet appelant et de l'objet parent
	 * @param parent un Genome différent de l'objet appelant
	 * @return un Genome issu d'un croisement
	 */
	Genome croisement(Genome parent);

}